package com;

import com.solution.array.Solution;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

/*
森林中有未知数量的兔子。提问其中若干只兔子 "还有多少只兔子与你（指被提问的兔子）颜色相同?" ，将答案收集到一个整数数组 answers 中，其中 answers[i] 是第 i 只兔子的回答。

给你数组 answers ，返回森林中兔子的最少数量。

示例 1：

输入：answers = [1,1,2]
输出：5
解释：
两只回答了 "1" 的兔子可能有相同的颜色，设为红色。
之后回答了 "2" 的兔子不会是红色，否则他们的回答会相互矛盾。
设回答了 "2" 的兔子为蓝色。
此外，森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中。
因此森林中兔子的最少数量是 5 只：3 只回答的和 2 只没有回答的。
示例 2：

输入：answers = [10,10,10]
输出：11

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/rabbits-in-forest
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test {
    public static void main(String[] args) {
        List<int[]> testArray = new ArrayList<>();
        testArray.add(new int[]{1, 1, 2});
        testArray.add(new int[]{10, 11, 10});
        testArray.add(new int[]{10, 10, 10});
        testArray.add(new int[]{0, 0, 1, 1, 1});  // 此处不能等于4，否则没有第五只兔子回答，第五个数，即第三个1，为另一个颜色的rabbit
        testArray.add(new int[]{1, 1, 0, 0, 0});

        List<Integer> answer = new ArrayList<>();
        answer.add(5);
        answer.add(23);
        answer.add(11);
        answer.add(6);  // special
        answer.add(5);

        int total_case = testArray.size();
        int success_case = 0;
        Solution solution = new Solution();
        for ( int i = 0 ; i < total_case ; i++ ) {
            int result = solution.numRabbits(testArray.get(i));
            if ( result == answer.get(i) )
                success_case++;
        }

        DecimalFormat df = new DecimalFormat();
        df.setMaximumFractionDigits(2);
        df.setMinimumFractionDigits(2);
        String percentage = df.format((double) success_case / total_case * 100.00) + "%";
        System.out.println("测试案例通过率：" + percentage);

    }
}
